<%--
  Created by IntelliJ IDEA.
  User: 康娜的小肥腿
  Date: 2020/3/25 0025
  Time: 15:42
--%>
<%@ page import="com.student.dao.UserDao" %>
<%@ page import="com.student.model.User" %>
<%--
  Created by IntelliJ IDEA.
  User: jamesmac
  Date: 2019/11/9
  Time: 20:13
  处理登录页面提交过来的表单数据
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    // 1. 从请求中获取表单数据, 在JSP环境中有一个表示请求的隐式对象request（即服务器已创建好的对象，我们直接拿来用就行）
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    // sout press Tab key
    // JSP中表示输出数据的隐式对象：out，我们可通过此对象向客户端浏览器写入HTML
    //System.out.println(username + ", " + password);

    // DAO: Data Access Object
    User logUser = new UserDao().login(username, password);
    // 1. 登录成功, 进入到系统的主页面
    if (logUser != null) {
        // 在JSP环境中session是一个隐式对象。与request、response这些隐式对象相似的。
        session.setAttribute("logUser", logUser);

        /*
            在JSP中页面跳转（页面导航）有以下两种方式：
            1. 请求转发: request.getRequestDispatcher(String uri).forward(request, response);
            2. 重定向: response响应是JSP中的又一个隐式对象. response.sendRedirect(String uri);
                request.getContextPath()得到应用程序的上下文，即8080端口后的部分

            请求转发和重定向的区别：
            1. 请求转发是在tomcat服务器内部，将request和response对象转发到另一个web组件（JSP/Servlet）上去断续处理,其特点
              是存储在request中的数据转发至别web组件（JSP/Servlet）后数据仍然存在。
              A.jsp(存数据) ---forward--> B.jsp
            2. 在重定向方式中，在一个web组件（JSP/Servlet）上存储的数据，重定向到另一个web组件（JSP/Servlet）后数据将丢失不可用。
            3.
        */
        // http://localhost:8080/firstweb/main.jsp
        response.sendRedirect(request.getContextPath() + "/main.jsp"); // 此处中的“/” 就是web目录的位置

    } else {
        // 2. 登录失败，返回到登录的页面重新登录
        response.sendRedirect(request.getContextPath() + "/index.jsp");
    }

%>
